Telegram Group & Telegram Channel
​​DeepGit: Hashing names

Ч1, Ч2, Ч3

Что-бы закончить с blob-aми , деревьями и коммитами надо разобраться как git генерирует имена файлам и как хранит все версии всех файлов.

Название git файла определяется следующим образом:
 tree #{text.lenght}\0

Общее правило: тип файла => решетка => длина текста => нулевой байт.

Это наш хедер.

Что-бы получить название файла:
Добавляем к хедеру текст файла и берем SHA1 сумму от результата.

Текст файла git сжимает через zlib.

Как это можно реализовать на python:
 [1]: import hashlib
In [2]: from hashlib import sha1
In [3]: sha = hashlib.sha1()
In [4]: line = "developer tools test line"
In [5]: header = f"blob {line.__len__()}\0"
In [6]: content = (header + line).encode()
In [7]: sha.update(content)
In [8]: sha.hexdigest()
Out[8]: '7f0571380d1f5e2a2fb13bb25eeefe5761895e7a'
In [9]: import zlib
In [10]: zlib.compress(content)

Первые два символа из 7f0571380d1f5e2a2fb13bb25eeefe5761895e7a пойдут как название директории, а остальные в название файла.

Резюме: Внутри git нет никакой магии, все данные весьма просто храняться и так-же просто используются.

Напоминаю Вам, что у нас есть чат: https://www.tg-me.com/ua/Dev Tools/com.developer_tools_chat , непонимаю почему вас там так мало :)



tg-me.com/developer_tools/242
Create:
Last Update:

​​DeepGit: Hashing names

Ч1, Ч2, Ч3

Что-бы закончить с blob-aми , деревьями и коммитами надо разобраться как git генерирует имена файлам и как хранит все версии всех файлов.

Название git файла определяется следующим образом:

 tree #{text.lenght}\0

Общее правило: тип файла => решетка => длина текста => нулевой байт.

Это наш хедер.

Что-бы получить название файла:
Добавляем к хедеру текст файла и берем SHA1 сумму от результата.

Текст файла git сжимает через zlib.

Как это можно реализовать на python:
 [1]: import hashlib
In [2]: from hashlib import sha1
In [3]: sha = hashlib.sha1()
In [4]: line = "developer tools test line"
In [5]: header = f"blob {line.__len__()}\0"
In [6]: content = (header + line).encode()
In [7]: sha.update(content)
In [8]: sha.hexdigest()
Out[8]: '7f0571380d1f5e2a2fb13bb25eeefe5761895e7a'
In [9]: import zlib
In [10]: zlib.compress(content)

Первые два символа из 7f0571380d1f5e2a2fb13bb25eeefe5761895e7a пойдут как название директории, а остальные в название файла.

Резюме: Внутри git нет никакой магии, все данные весьма просто храняться и так-же просто используются.

Напоминаю Вам, что у нас есть чат: https://www.tg-me.com/ua/Dev Tools/com.developer_tools_chat , непонимаю почему вас там так мало :)

BY Dev Tools


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/developer_tools/242

View MORE
Open in Telegram


Dev Tools Telegram | DID YOU KNOW?

Date: |

The STAR Market, as is implied by the name, is heavily geared toward smaller innovative tech companies, in particular those engaged in strategically important fields, such as biopharmaceuticals, 5G technology, semiconductors, and new energy. The STAR Market currently has 340 listed securities. The STAR Market is seen as important for China’s high-tech and emerging industries, providing a space for smaller companies to raise capital in China. This is especially significant for technology companies that may be viewed with suspicion on overseas stock exchanges.

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Dev Tools from ua


Telegram Dev Tools
FROM USA